Javascript toFixed 不舍入
全部标签 我有一个数字,我需要将它四舍五入到最接近的十的幂。看起来这应该可以在没有一大堆if语句或使用递归或循环的情况下实现,但我不知道最优雅的方法。如果不清楚我的意思,这里有一些例子:f(1)===1f(5)===1f(15)===10f(43)===10f(456)===100f(999)===100澄清一下:我不需要最接近的10的倍数(不是:10、20、30...),而是最接近的10的幂(10、100、1000...)。编辑:据我所知,这不是一个重复的问题。请停止重复询问四舍五入到十的最接近的倍数的问题。这个问题与链接的问题无关,因为它询问四舍五入到最接近的十的幂。如果您想将此问题作为重复
目前我在一个使用moment.js的网站上工作。我只想使用jquery。我使用以下方法获取当前分钟:varminute=moment().minute();但我想在最近的下一个5分钟标记开始设置闹钟。假设现在是晚上8点38分,var分钟将是38。我想将输入值设置为40(即40分钟)那么我的选择是:000510152025303540455055我可以这样输入项目:varminute=moment().minute();$("#minuteIDoption[value="+minute+"]").prop("selected","selected");我如何做到这一点,而不是找到确切的选
我不知道我是否遗漏了一些明显的东西,但是......在IE、Opera和Chrome中,我从以5结尾的舍入数字中得到了我期望的结果:125toPrecision(2)=>13011.5toPrecision(2)=>12这是我所期望的。不过,Firefox更“复杂”一点,产生以下内容:125toPrecision(2)=>120//wtf!!!11.5toPrecision(2)=>12经过一番摸索,我得出的结论是Firefox使用了“四舍五入”规则,如果5之前的数字是偶数,则数字向下舍入,如果5之前的数字是奇数数字四舍五入:0.5=>01.5=>22.5=>23.5=>4,etc.我
我在一些遗留代码中看到了以下(奇怪的)Javascript舍入函数。谷歌搜索后,我可以看到它出现在网上的许多地方。但是,我无法弄清楚为什么会出现硬编码值8191和10485。有谁知道包含这些值是否有合理的理由?如果没有,希望我们能消灭模因!functionroundNumber(num,dec){varnewnumber=0;if(num>8191&&num 最佳答案 8191(0x1fff)在二进制表示方面可能很重要,但10485(0x28f5)似乎并不重要。我敢打赌,这是一种解决可感知的浮点舍入错误的技巧。float可能以不可预
我的客户端脚本没有计算出与我的服务器端代码相同的值:例如:varx=(2.85*.1);alert(x);这给出了一个数字0.28500000000000003但是我的服务器端代码(C#)计算出的数字是0.285,当四舍五入到小数点后2位时得到0.28如果我尝试将0.28500000000000003舍入到小数点后两位,我得到0.29。如何让我的Javascript创建一个与我的服务器端代码匹配的图形。看起来我必须经过2次舍入-首先删除尾随的3,然后舍入到所需的小数位。例如:varx=0.2850000000003;x=parseFloat(x.toFixed(3))x=x.toFix
我想将1.006舍入到两位小数,期望输出为1.01当我做varnum=1.006;alert(Math.round(num,2));//Outputs1alert(num.toFixed(2));//Output1.01同样,varnum=1.106;alert(Math.round(num,2));//Outputs1alert(num.toFixed(2));;//Outputs1.11所以每次都使用toFixed()是否安全?toFixed()是否跨浏览器投诉?请给我建议。P.S:我尝试在堆栈溢出中搜索类似的答案,但找不到正确的答案。编辑:为什么1.015返回1.01而1.045
我有一个字符串值“9223372036854775807”。我在JavaScript中使用Number()函数,使用以下代码将其转换为数字值varnumericVal=Number('9223372036854775807');当我检查numericVal中的值时,它是9223372036854776000。我怎样才能得到代表数字的字符串的等效值? 最佳答案 JavaScript数字是DoublePrecisionFloats;可以精确存储的最大整数是2^53(9007199254740992)。如果你真的需要它的数字,你有一些有趣
我使用了以下两种方法:Number.prototype.myRound=function(decimalPlaces){varmultiplier=Math.pow(10,decimalPlaces);return(Math.round(this*multiplier)/multiplier);};alert((239.525).myRound(2));数学上alert应该是239.53但它给出239.52作为输出。所以我尝试使用.toFixed()函数&我得到了正确的答案。但是当我尝试获取239.575的答案时,它再次给出了错误的输出。alert((239.575).toFixed(
我用数据初始化noUiSlidervarsettings={connect:"lower",range:{max:87654567890,min:0},start:30679098762,step:1}为什么在初始化slider后值为30679098761.50?演示在这里-https://jsfiddle.net/serGlazkov/yrppsmvo/5/ 最佳答案 不能在slider宽度上准确表示这么大的数字(比如300像素不能合理地除以87654567890)。解决方案是使用较小的数字范围,然后在数组中查找较大的值:varr
我怎样才能像这样舍入一个指数级的小数:2.4451778232910804e-26.toFixed(4)=>2.4452e-26在文档中,使用.toFixed()每次都会给我0。exponentiallysmallnumber是否有特殊函数?我宁愿不修改Number.prototype.toFixed()。 最佳答案 如您所写,toFixed不够精确,因为它只允许“仅”最多20位小数。乘法+除法也不会起作用,因为除法可能会再次给你一个不准确的更长的数字。但是toPrecision()可能有帮助。编辑:如果你想要4位小数,你需要传递5